package entidades;

/**
 * @author Paulo -> 42243
 * @author Daniela -> 42439
 *
 */

import java.util.concurrent.Semaphore;
import shared.*;

public class Gruta {
	private Semaphore ocupado;
	private int quantidadeActual; 
	private int id; 
	
	public Gruta (int id) {
		this.ocupado = new Semaphore(1);
		this.quantidadeActual = 0;
		this.id = id;
	}
	
	public int getId() {
		return this.id;
	}
	
	public boolean isEmpty() {
		if (this.quantidadeActual == 0)
			return true;
		else
			return false;
	}
	
	public void guardarTesouro(int q, int id) throws InterruptedException {
		this.ocupado.acquire();
		this.quantidadeActual =  this.quantidadeActual + q;
		System.out.println("O Pirata " + id + " carregou do barco "+q+" unidades de Tesouro para Gruta "+this.id+" e a gruta ficou com "+this.quantidadeActual+" unidades de Tesouro!");
		Preferences.log.add("O Pirata " + id + " carregou do barco "+q+" unidades de Tesouro para Gruta "+this.id+" e a gruta ficou com "+this.quantidadeActual+" unidades de Tesouro!");
		this.ocupado.release();
	}

	public int getQuantidadeActual() {
		return this.quantidadeActual;
	}
	
	public int retirarTesouro(int q) throws InterruptedException {
		int v = 0;
		this.ocupado.acquire();
		
		if (q < this.quantidadeActual) {
			this.quantidadeActual =  this.quantidadeActual - q;
			v = q;
		}
		else {
			v = this.quantidadeActual;
			this.quantidadeActual = 0;
		}
		
		
		this.ocupado.release();
		return v;
	}
}
